<?php
    namespace Admin\Controller;

    use Common\Controller\AdminbaseController;

    class UserController extends AdminbaseController{

        protected $users_model,$role_model;

        public function _initialize() {
            parent::_initialize();
            $this->users_model = D("Common/Users");
            $this->role_model = D("Common/Role");
        }

        // 管理员列表
        public function index(){
//            $where = array("user_type"=>1);
            $where = array();
            /**搜索条件**/
            $user_login = I('request.user_login');
            $user_email = trim(I('request.user_email'));
            if($user_login){
                $where['user_login'] = array('like',"%$user_login%");
            }

            if($user_email){
                $where['user_email'] = array('like',"%$user_email%");;
            }

            $count=$this->users_model->where($where)->count();
            $page = $this->page($count, 20);
            $users = $this->users_model
                ->where($where)
                ->order("user_type ASC,create_time DESC")
                ->limit($page->firstRow, $page->listRows)
                ->select();
            $roles_src=$this->role_model->select();
            $roles=array();
            foreach ($roles_src as $r){
                $roleid=$r['id'];
                $roles["$roleid"]=$r;
            }
            $this->assign("page", $page->show('Admin'));
            $this->assign("roles",$roles);
            $this->assign("users",$users);
            $this->display();
        }

        // 管理员添加
        public function add(){
            $roles=$this->role_model->where(array('status' => 1))->order("id DESC")->select();
            $this->assign("roles",$roles);
            $this->display();
        }

        // 管理员添加提交
        public function add_post(){
            if(IS_POST){
                if(!empty($_POST['role_id'])){
                    $role_id=$_POST['role_id'];
                    unset($_POST['role_id']);
                    $_POST['user_type'] = $role_id;
                    if ($this->users_model->create()!==false) {
                        $result=$this->users_model->add();
                        if ($result!==false) {
                            $role_user_model=M("RoleUser");
                            if(sp_get_current_admin_id() != 1 && $role_id == 1){
                                $this->error("为了网站的安全，非网站创建者不可创建超级管理员！");
                            }
                            $role_user_model->add(array("role_id"=>$role_id,"user_id"=>$result));

                            $this->success("添加成功！", U("user/index"));
                        } else {
                            $this->error("添加失败！");
                        }
                    } else {
                        $this->error($this->users_model->getError());
                    }
                }else{
                    $this->error("请为此用户指定角色！");
                }

            }
        }

        // 管理员编辑
        public function edit(){
            $id = I('get.id',0,'intval');
            $roles=$this->role_model->where(array('status' => 1))->order("id DESC")->select();
            $this->assign("roles",$roles);
            $role_user_model=M("RoleUser");
            $role_ids=$role_user_model->where(array("user_id"=>$id))->getField("role_id",true);
            $this->assign("role_ids",$role_ids);

            $user=$this->users_model->where(array("id"=>$id))->find();
            $this->assign($user);
            $this->display();
        }

        // 管理员编辑提交
        public function edit_post(){
            if (IS_POST) {
                $id = I("post.id");
                if(!empty($_POST['role_id'])|| $id == 1){
                    if(empty($_POST['user_pass'])){
                        unset($_POST['user_pass']);
                    }
                    $role_id = I('post.role_id');
                    unset($_POST['role_id']);
                    if ($this->users_model->create()!==false) {
                        $result=$this->users_model->save();
                        if ($result!==false) {
                            $uid = I('post.id',0,'intval');
                            if($id != 1){
                                $role_user_model=M("RoleUser");
                                $role_user_model->where(array("user_id"=>$uid))->delete();

                                if(sp_get_current_admin_id() != 1 && $role_id == 1){
                                    $this->error("为了网站的安全，非网站创建者不可创建超级管理员！");
                                }
                                $role_user_model->add(array("role_id"=>$role_id,"user_id"=>$uid));
                            }
                            $this->success("保存成功！", U("user/index"));
                        } else {
                            $this->error("保存失败！");
                        }
                    } else {
                        $this->error($this->users_model->getError());
                    }
                }else{
                    $this->error("请为此用户指定角色！");
                }

            }
        }

        // 管理员删除
        public function delete(){
            $id = I('get.id',0,'intval');
            if($id==1){
                $this->error("最高管理员不能删除！");
            }

            if ($this->users_model->delete($id)!==false) {
                M("RoleUser")->where(array("user_id"=>$id))->delete();
                $this->success("删除成功！");
            } else {
                $this->error("删除失败！");
            }
        }

        // 管理员个人信息修改
        public function userinfo(){
            $id=sp_get_current_admin_id();
            $user=$this->users_model->where(array("id"=>$id))->find();
            $this->assign($user);
            $this->display();
        }

        // 管理员个人信息修改提交
        public function userinfo_post(){
            if (IS_POST) {
                $_POST['id']=sp_get_current_admin_id();
                $password = I("post.user_pass");
                if(empty($password)){
                    $this->error("登录密码不能为空！");exit;
                }
                $user = $this->users_model->where(array("id"=>$_POST["id"]))->find();
                if(!sp_compare_password($password, $user['user_pass'])){
                    $this->error("登录密码输入有误！");exit;
                }


                $create_result=$this->users_model
                    ->field("id,user_nickname,user_phone,user_company")
                    ->create();
                if ($create_result!==false) {
                    if ($this->users_model->save()!==false) {
                        $this->success("保存成功！");
                    } else {
                        $this->error("保存失败！");
                    }
                } else {
                    $this->error($this->users_model->getError());
                }
            }
        }

        // 停用管理员
        public function ban(){
            $id = I('get.id',0,'intval');
            if (!empty($id)) {
                $result = $this->users_model->where(array("id"=>$id))->setField('user_status','0');
                if ($result!==false) {
                    $this->success("管理员停用成功！", U("user/index"));
                } else {
                    $this->error('管理员停用失败！');
                }
            } else {
                $this->error('数据传入失败！');
            }
        }

        // 启用管理员
        public function cancelban(){
            $id = I('get.id',0,'intval');
            if (!empty($id)) {
                $result = $this->users_model->where(array("id"=>$id))->setField('user_status','1');
                if ($result!==false) {
                    $this->success("管理员启用成功！", U("user/index"));
                } else {
                    $this->error('管理员启用失败！');
                }
            } else {
                $this->error('数据传入失败！');
            }
        }



    }